package com.ldh.mod4j.businessdomain.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import com.ldh.mod4j.businessdomain.services.BusinessDomainDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalBusinessDomainDslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'domain'", "';'", "'association'", "'<->'", "'->'", "'ordered'", "'class'", "'inherits'", "'['", "'rules'", "']'", "'enumeration'", "'='", "'unique'", "','", "'nullable'", "'derived'", "'writable'", "'boolean'", "'default'", "'true'", "'false'", "'string'", "'minlength'", "'maxlength'", "'regexp'", "'datetime'", "'integer'", "'min'", "'max'", "'decimal'", "'precision'", "'scale'", "'many'", "'one'", "'1..*'", "'1..1'"
    };
    public static final int RULE_ID=5;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int T__19=19;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=6;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int RULE_SL_COMMENT=8;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int RULE_STRING=4;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalBusinessDomainDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalBusinessDomainDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalBusinessDomainDslParser.tokenNames; }
    public String getGrammarFileName() { return "../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g"; }



     	private BusinessDomainDslGrammarAccess grammarAccess;
     	
        public InternalBusinessDomainDslParser(TokenStream input, BusinessDomainDslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "BusinessDomainModel";	
       	}
       	
       	@Override
       	protected BusinessDomainDslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleBusinessDomainModel"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:68:1: entryRuleBusinessDomainModel returns [EObject current=null] : iv_ruleBusinessDomainModel= ruleBusinessDomainModel EOF ;
    public final EObject entryRuleBusinessDomainModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBusinessDomainModel = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:69:2: (iv_ruleBusinessDomainModel= ruleBusinessDomainModel EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:70:2: iv_ruleBusinessDomainModel= ruleBusinessDomainModel EOF
            {
             newCompositeNode(grammarAccess.getBusinessDomainModelRule()); 
            pushFollow(FOLLOW_ruleBusinessDomainModel_in_entryRuleBusinessDomainModel75);
            iv_ruleBusinessDomainModel=ruleBusinessDomainModel();

            state._fsp--;

             current =iv_ruleBusinessDomainModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBusinessDomainModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBusinessDomainModel"


    // $ANTLR start "ruleBusinessDomainModel"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:77:1: ruleBusinessDomainModel returns [EObject current=null] : ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'domain' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= ';' ( ( (lv_types_4_0= ruleBusinessClass ) ) | ( (lv_enumerations_5_0= ruleEnumeration ) ) | ( (lv_associations_6_0= ruleAssociation ) ) )* ) ;
    public final EObject ruleBusinessDomainModel() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        EObject lv_types_4_0 = null;

        EObject lv_enumerations_5_0 = null;

        EObject lv_associations_6_0 = null;


         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:80:28: ( ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'domain' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= ';' ( ( (lv_types_4_0= ruleBusinessClass ) ) | ( (lv_enumerations_5_0= ruleEnumeration ) ) | ( (lv_associations_6_0= ruleAssociation ) ) )* ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:81:1: ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'domain' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= ';' ( ( (lv_types_4_0= ruleBusinessClass ) ) | ( (lv_enumerations_5_0= ruleEnumeration ) ) | ( (lv_associations_6_0= ruleAssociation ) ) )* )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:81:1: ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'domain' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= ';' ( ( (lv_types_4_0= ruleBusinessClass ) ) | ( (lv_enumerations_5_0= ruleEnumeration ) ) | ( (lv_associations_6_0= ruleAssociation ) ) )* )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:81:2: ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'domain' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= ';' ( ( (lv_types_4_0= ruleBusinessClass ) ) | ( (lv_enumerations_5_0= ruleEnumeration ) ) | ( (lv_associations_6_0= ruleAssociation ) ) )*
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:81:2: ( (lv_description_0_0= RULE_STRING ) )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==RULE_STRING) ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:82:1: (lv_description_0_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:82:1: (lv_description_0_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:83:3: lv_description_0_0= RULE_STRING
                    {
                    lv_description_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleBusinessDomainModel127); 

                    			newLeafNode(lv_description_0_0, grammarAccess.getBusinessDomainModelAccess().getDescriptionSTRINGTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getBusinessDomainModelRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_0_0, 
                            		"STRING");
                    	    

                    }


                    }
                    break;

            }

            otherlv_1=(Token)match(input,11,FOLLOW_11_in_ruleBusinessDomainModel145); 

                	newLeafNode(otherlv_1, grammarAccess.getBusinessDomainModelAccess().getDomainKeyword_1());
                
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:103:1: ( (lv_name_2_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:104:1: (lv_name_2_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:104:1: (lv_name_2_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:105:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleBusinessDomainModel162); 

            			newLeafNode(lv_name_2_0, grammarAccess.getBusinessDomainModelAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getBusinessDomainModelRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_12_in_ruleBusinessDomainModel179); 

                	newLeafNode(otherlv_3, grammarAccess.getBusinessDomainModelAccess().getSemicolonKeyword_3());
                
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:125:1: ( ( (lv_types_4_0= ruleBusinessClass ) ) | ( (lv_enumerations_5_0= ruleEnumeration ) ) | ( (lv_associations_6_0= ruleAssociation ) ) )*
            loop2:
            do {
                int alt2=4;
                switch ( input.LA(1) ) {
                case RULE_STRING:
                    {
                    switch ( input.LA(2) ) {
                    case 13:
                        {
                        alt2=3;
                        }
                        break;
                    case 22:
                        {
                        alt2=2;
                        }
                        break;
                    case 17:
                        {
                        alt2=1;
                        }
                        break;

                    }

                    }
                    break;
                case 17:
                    {
                    alt2=1;
                    }
                    break;
                case 22:
                    {
                    alt2=2;
                    }
                    break;
                case 13:
                    {
                    alt2=3;
                    }
                    break;

                }

                switch (alt2) {
            	case 1 :
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:125:2: ( (lv_types_4_0= ruleBusinessClass ) )
            	    {
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:125:2: ( (lv_types_4_0= ruleBusinessClass ) )
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:126:1: (lv_types_4_0= ruleBusinessClass )
            	    {
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:126:1: (lv_types_4_0= ruleBusinessClass )
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:127:3: lv_types_4_0= ruleBusinessClass
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getBusinessDomainModelAccess().getTypesBusinessClassParserRuleCall_4_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleBusinessClass_in_ruleBusinessDomainModel201);
            	    lv_types_4_0=ruleBusinessClass();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getBusinessDomainModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"types",
            	            		lv_types_4_0, 
            	            		"BusinessClass");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:144:6: ( (lv_enumerations_5_0= ruleEnumeration ) )
            	    {
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:144:6: ( (lv_enumerations_5_0= ruleEnumeration ) )
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:145:1: (lv_enumerations_5_0= ruleEnumeration )
            	    {
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:145:1: (lv_enumerations_5_0= ruleEnumeration )
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:146:3: lv_enumerations_5_0= ruleEnumeration
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getBusinessDomainModelAccess().getEnumerationsEnumerationParserRuleCall_4_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleEnumeration_in_ruleBusinessDomainModel228);
            	    lv_enumerations_5_0=ruleEnumeration();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getBusinessDomainModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"enumerations",
            	            		lv_enumerations_5_0, 
            	            		"Enumeration");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:163:6: ( (lv_associations_6_0= ruleAssociation ) )
            	    {
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:163:6: ( (lv_associations_6_0= ruleAssociation ) )
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:164:1: (lv_associations_6_0= ruleAssociation )
            	    {
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:164:1: (lv_associations_6_0= ruleAssociation )
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:165:3: lv_associations_6_0= ruleAssociation
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getBusinessDomainModelAccess().getAssociationsAssociationParserRuleCall_4_2_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAssociation_in_ruleBusinessDomainModel255);
            	    lv_associations_6_0=ruleAssociation();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getBusinessDomainModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"associations",
            	            		lv_associations_6_0, 
            	            		"Association");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBusinessDomainModel"


    // $ANTLR start "entryRuleAssociation"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:189:1: entryRuleAssociation returns [EObject current=null] : iv_ruleAssociation= ruleAssociation EOF ;
    public final EObject entryRuleAssociation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAssociation = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:190:2: (iv_ruleAssociation= ruleAssociation EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:191:2: iv_ruleAssociation= ruleAssociation EOF
            {
             newCompositeNode(grammarAccess.getAssociationRule()); 
            pushFollow(FOLLOW_ruleAssociation_in_entryRuleAssociation293);
            iv_ruleAssociation=ruleAssociation();

            state._fsp--;

             current =iv_ruleAssociation; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAssociation303); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAssociation"


    // $ANTLR start "ruleAssociation"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:198:1: ruleAssociation returns [EObject current=null] : ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'association' ( (otherlv_2= RULE_ID ) ) ( (lv_sourceRoleName_3_0= RULE_ID ) ) ( (lv_sourceMultiplicity_4_0= ruleMultiplicity ) ) ( ( (lv_bidirectional_5_0= '<->' ) ) | otherlv_6= '->' ) ( (lv_targetMultiplicity_7_0= ruleMultiplicity ) ) ( (otherlv_8= RULE_ID ) ) ( (lv_targetRoleName_9_0= RULE_ID ) ) ( (lv_ordered_10_0= 'ordered' ) )? otherlv_11= ';' ) ;
    public final EObject ruleAssociation() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_sourceRoleName_3_0=null;
        Token lv_bidirectional_5_0=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token lv_targetRoleName_9_0=null;
        Token lv_ordered_10_0=null;
        Token otherlv_11=null;
        Enumerator lv_sourceMultiplicity_4_0 = null;

        Enumerator lv_targetMultiplicity_7_0 = null;


         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:201:28: ( ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'association' ( (otherlv_2= RULE_ID ) ) ( (lv_sourceRoleName_3_0= RULE_ID ) ) ( (lv_sourceMultiplicity_4_0= ruleMultiplicity ) ) ( ( (lv_bidirectional_5_0= '<->' ) ) | otherlv_6= '->' ) ( (lv_targetMultiplicity_7_0= ruleMultiplicity ) ) ( (otherlv_8= RULE_ID ) ) ( (lv_targetRoleName_9_0= RULE_ID ) ) ( (lv_ordered_10_0= 'ordered' ) )? otherlv_11= ';' ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:202:1: ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'association' ( (otherlv_2= RULE_ID ) ) ( (lv_sourceRoleName_3_0= RULE_ID ) ) ( (lv_sourceMultiplicity_4_0= ruleMultiplicity ) ) ( ( (lv_bidirectional_5_0= '<->' ) ) | otherlv_6= '->' ) ( (lv_targetMultiplicity_7_0= ruleMultiplicity ) ) ( (otherlv_8= RULE_ID ) ) ( (lv_targetRoleName_9_0= RULE_ID ) ) ( (lv_ordered_10_0= 'ordered' ) )? otherlv_11= ';' )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:202:1: ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'association' ( (otherlv_2= RULE_ID ) ) ( (lv_sourceRoleName_3_0= RULE_ID ) ) ( (lv_sourceMultiplicity_4_0= ruleMultiplicity ) ) ( ( (lv_bidirectional_5_0= '<->' ) ) | otherlv_6= '->' ) ( (lv_targetMultiplicity_7_0= ruleMultiplicity ) ) ( (otherlv_8= RULE_ID ) ) ( (lv_targetRoleName_9_0= RULE_ID ) ) ( (lv_ordered_10_0= 'ordered' ) )? otherlv_11= ';' )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:202:2: ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'association' ( (otherlv_2= RULE_ID ) ) ( (lv_sourceRoleName_3_0= RULE_ID ) ) ( (lv_sourceMultiplicity_4_0= ruleMultiplicity ) ) ( ( (lv_bidirectional_5_0= '<->' ) ) | otherlv_6= '->' ) ( (lv_targetMultiplicity_7_0= ruleMultiplicity ) ) ( (otherlv_8= RULE_ID ) ) ( (lv_targetRoleName_9_0= RULE_ID ) ) ( (lv_ordered_10_0= 'ordered' ) )? otherlv_11= ';'
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:202:2: ( (lv_description_0_0= RULE_STRING ) )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==RULE_STRING) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:203:1: (lv_description_0_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:203:1: (lv_description_0_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:204:3: lv_description_0_0= RULE_STRING
                    {
                    lv_description_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleAssociation345); 

                    			newLeafNode(lv_description_0_0, grammarAccess.getAssociationAccess().getDescriptionSTRINGTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getAssociationRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_0_0, 
                            		"STRING");
                    	    

                    }


                    }
                    break;

            }

            otherlv_1=(Token)match(input,13,FOLLOW_13_in_ruleAssociation363); 

                	newLeafNode(otherlv_1, grammarAccess.getAssociationAccess().getAssociationKeyword_1());
                
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:224:1: ( (otherlv_2= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:225:1: (otherlv_2= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:225:1: (otherlv_2= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:226:3: otherlv_2= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getAssociationRule());
            	        }
                    
            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAssociation383); 

            		newLeafNode(otherlv_2, grammarAccess.getAssociationAccess().getSourceBusinessClassCrossReference_2_0()); 
            	

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:237:2: ( (lv_sourceRoleName_3_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:238:1: (lv_sourceRoleName_3_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:238:1: (lv_sourceRoleName_3_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:239:3: lv_sourceRoleName_3_0= RULE_ID
            {
            lv_sourceRoleName_3_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAssociation400); 

            			newLeafNode(lv_sourceRoleName_3_0, grammarAccess.getAssociationAccess().getSourceRoleNameIDTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAssociationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"sourceRoleName",
                    		lv_sourceRoleName_3_0, 
                    		"ID");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:255:2: ( (lv_sourceMultiplicity_4_0= ruleMultiplicity ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:256:1: (lv_sourceMultiplicity_4_0= ruleMultiplicity )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:256:1: (lv_sourceMultiplicity_4_0= ruleMultiplicity )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:257:3: lv_sourceMultiplicity_4_0= ruleMultiplicity
            {
             
            	        newCompositeNode(grammarAccess.getAssociationAccess().getSourceMultiplicityMultiplicityEnumRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleMultiplicity_in_ruleAssociation426);
            lv_sourceMultiplicity_4_0=ruleMultiplicity();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAssociationRule());
            	        }
                   		set(
                   			current, 
                   			"sourceMultiplicity",
                    		lv_sourceMultiplicity_4_0, 
                    		"Multiplicity");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:273:2: ( ( (lv_bidirectional_5_0= '<->' ) ) | otherlv_6= '->' )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==14) ) {
                alt4=1;
            }
            else if ( (LA4_0==15) ) {
                alt4=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }
            switch (alt4) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:273:3: ( (lv_bidirectional_5_0= '<->' ) )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:273:3: ( (lv_bidirectional_5_0= '<->' ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:274:1: (lv_bidirectional_5_0= '<->' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:274:1: (lv_bidirectional_5_0= '<->' )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:275:3: lv_bidirectional_5_0= '<->'
                    {
                    lv_bidirectional_5_0=(Token)match(input,14,FOLLOW_14_in_ruleAssociation445); 

                            newLeafNode(lv_bidirectional_5_0, grammarAccess.getAssociationAccess().getBidirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_5_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getAssociationRule());
                    	        }
                           		setWithLastConsumed(current, "bidirectional", true, "<->");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:289:7: otherlv_6= '->'
                    {
                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleAssociation476); 

                        	newLeafNode(otherlv_6, grammarAccess.getAssociationAccess().getHyphenMinusGreaterThanSignKeyword_5_1());
                        

                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:293:2: ( (lv_targetMultiplicity_7_0= ruleMultiplicity ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:294:1: (lv_targetMultiplicity_7_0= ruleMultiplicity )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:294:1: (lv_targetMultiplicity_7_0= ruleMultiplicity )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:295:3: lv_targetMultiplicity_7_0= ruleMultiplicity
            {
             
            	        newCompositeNode(grammarAccess.getAssociationAccess().getTargetMultiplicityMultiplicityEnumRuleCall_6_0()); 
            	    
            pushFollow(FOLLOW_ruleMultiplicity_in_ruleAssociation498);
            lv_targetMultiplicity_7_0=ruleMultiplicity();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAssociationRule());
            	        }
                   		set(
                   			current, 
                   			"targetMultiplicity",
                    		lv_targetMultiplicity_7_0, 
                    		"Multiplicity");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:311:2: ( (otherlv_8= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:312:1: (otherlv_8= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:312:1: (otherlv_8= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:313:3: otherlv_8= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getAssociationRule());
            	        }
                    
            otherlv_8=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAssociation518); 

            		newLeafNode(otherlv_8, grammarAccess.getAssociationAccess().getTargetBusinessClassCrossReference_7_0()); 
            	

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:324:2: ( (lv_targetRoleName_9_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:325:1: (lv_targetRoleName_9_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:325:1: (lv_targetRoleName_9_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:326:3: lv_targetRoleName_9_0= RULE_ID
            {
            lv_targetRoleName_9_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAssociation535); 

            			newLeafNode(lv_targetRoleName_9_0, grammarAccess.getAssociationAccess().getTargetRoleNameIDTerminalRuleCall_8_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAssociationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"targetRoleName",
                    		lv_targetRoleName_9_0, 
                    		"ID");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:342:2: ( (lv_ordered_10_0= 'ordered' ) )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==16) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:343:1: (lv_ordered_10_0= 'ordered' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:343:1: (lv_ordered_10_0= 'ordered' )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:344:3: lv_ordered_10_0= 'ordered'
                    {
                    lv_ordered_10_0=(Token)match(input,16,FOLLOW_16_in_ruleAssociation558); 

                            newLeafNode(lv_ordered_10_0, grammarAccess.getAssociationAccess().getOrderedOrderedKeyword_9_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getAssociationRule());
                    	        }
                           		setWithLastConsumed(current, "ordered", true, "ordered");
                    	    

                    }


                    }
                    break;

            }

            otherlv_11=(Token)match(input,12,FOLLOW_12_in_ruleAssociation584); 

                	newLeafNode(otherlv_11, grammarAccess.getAssociationAccess().getSemicolonKeyword_10());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAssociation"


    // $ANTLR start "entryRuleBusinessClass"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:369:1: entryRuleBusinessClass returns [EObject current=null] : iv_ruleBusinessClass= ruleBusinessClass EOF ;
    public final EObject entryRuleBusinessClass() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBusinessClass = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:370:2: (iv_ruleBusinessClass= ruleBusinessClass EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:371:2: iv_ruleBusinessClass= ruleBusinessClass EOF
            {
             newCompositeNode(grammarAccess.getBusinessClassRule()); 
            pushFollow(FOLLOW_ruleBusinessClass_in_entryRuleBusinessClass620);
            iv_ruleBusinessClass=ruleBusinessClass();

            state._fsp--;

             current =iv_ruleBusinessClass; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBusinessClass630); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBusinessClass"


    // $ANTLR start "ruleBusinessClass"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:378:1: ruleBusinessClass returns [EObject current=null] : ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'class' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'inherits' ( (otherlv_4= RULE_ID ) ) )? otherlv_5= '[' ( (lv_properties_6_0= ruleProperty ) )* (otherlv_7= 'rules' otherlv_8= '[' ( (lv_businessRules_9_0= ruleAbstractBusinessRule ) )* otherlv_10= ']' )? otherlv_11= ']' ) ;
    public final EObject ruleBusinessClass() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        EObject lv_properties_6_0 = null;

        EObject lv_businessRules_9_0 = null;


         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:381:28: ( ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'class' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'inherits' ( (otherlv_4= RULE_ID ) ) )? otherlv_5= '[' ( (lv_properties_6_0= ruleProperty ) )* (otherlv_7= 'rules' otherlv_8= '[' ( (lv_businessRules_9_0= ruleAbstractBusinessRule ) )* otherlv_10= ']' )? otherlv_11= ']' ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:382:1: ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'class' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'inherits' ( (otherlv_4= RULE_ID ) ) )? otherlv_5= '[' ( (lv_properties_6_0= ruleProperty ) )* (otherlv_7= 'rules' otherlv_8= '[' ( (lv_businessRules_9_0= ruleAbstractBusinessRule ) )* otherlv_10= ']' )? otherlv_11= ']' )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:382:1: ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'class' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'inherits' ( (otherlv_4= RULE_ID ) ) )? otherlv_5= '[' ( (lv_properties_6_0= ruleProperty ) )* (otherlv_7= 'rules' otherlv_8= '[' ( (lv_businessRules_9_0= ruleAbstractBusinessRule ) )* otherlv_10= ']' )? otherlv_11= ']' )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:382:2: ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'class' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'inherits' ( (otherlv_4= RULE_ID ) ) )? otherlv_5= '[' ( (lv_properties_6_0= ruleProperty ) )* (otherlv_7= 'rules' otherlv_8= '[' ( (lv_businessRules_9_0= ruleAbstractBusinessRule ) )* otherlv_10= ']' )? otherlv_11= ']'
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:382:2: ( (lv_description_0_0= RULE_STRING ) )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==RULE_STRING) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:383:1: (lv_description_0_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:383:1: (lv_description_0_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:384:3: lv_description_0_0= RULE_STRING
                    {
                    lv_description_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleBusinessClass672); 

                    			newLeafNode(lv_description_0_0, grammarAccess.getBusinessClassAccess().getDescriptionSTRINGTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getBusinessClassRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_0_0, 
                            		"STRING");
                    	    

                    }


                    }
                    break;

            }

            otherlv_1=(Token)match(input,17,FOLLOW_17_in_ruleBusinessClass690); 

                	newLeafNode(otherlv_1, grammarAccess.getBusinessClassAccess().getClassKeyword_1());
                
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:404:1: ( (lv_name_2_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:405:1: (lv_name_2_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:405:1: (lv_name_2_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:406:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleBusinessClass707); 

            			newLeafNode(lv_name_2_0, grammarAccess.getBusinessClassAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getBusinessClassRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:422:2: (otherlv_3= 'inherits' ( (otherlv_4= RULE_ID ) ) )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==18) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:422:4: otherlv_3= 'inherits' ( (otherlv_4= RULE_ID ) )
                    {
                    otherlv_3=(Token)match(input,18,FOLLOW_18_in_ruleBusinessClass725); 

                        	newLeafNode(otherlv_3, grammarAccess.getBusinessClassAccess().getInheritsKeyword_3_0());
                        
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:426:1: ( (otherlv_4= RULE_ID ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:427:1: (otherlv_4= RULE_ID )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:427:1: (otherlv_4= RULE_ID )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:428:3: otherlv_4= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getBusinessClassRule());
                    	        }
                            
                    otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleBusinessClass745); 

                    		newLeafNode(otherlv_4, grammarAccess.getBusinessClassAccess().getSuperclassBusinessClassCrossReference_3_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,19,FOLLOW_19_in_ruleBusinessClass759); 

                	newLeafNode(otherlv_5, grammarAccess.getBusinessClassAccess().getLeftSquareBracketKeyword_4());
                
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:443:1: ( (lv_properties_6_0= ruleProperty ) )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( ((LA8_0>=RULE_STRING && LA8_0<=RULE_ID)||LA8_0==29||LA8_0==33||(LA8_0>=37 && LA8_0<=38)||LA8_0==41) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:444:1: (lv_properties_6_0= ruleProperty )
            	    {
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:444:1: (lv_properties_6_0= ruleProperty )
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:445:3: lv_properties_6_0= ruleProperty
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getBusinessClassAccess().getPropertiesPropertyParserRuleCall_5_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleProperty_in_ruleBusinessClass780);
            	    lv_properties_6_0=ruleProperty();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getBusinessClassRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"properties",
            	            		lv_properties_6_0, 
            	            		"Property");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:461:3: (otherlv_7= 'rules' otherlv_8= '[' ( (lv_businessRules_9_0= ruleAbstractBusinessRule ) )* otherlv_10= ']' )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==20) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:461:5: otherlv_7= 'rules' otherlv_8= '[' ( (lv_businessRules_9_0= ruleAbstractBusinessRule ) )* otherlv_10= ']'
                    {
                    otherlv_7=(Token)match(input,20,FOLLOW_20_in_ruleBusinessClass794); 

                        	newLeafNode(otherlv_7, grammarAccess.getBusinessClassAccess().getRulesKeyword_6_0());
                        
                    otherlv_8=(Token)match(input,19,FOLLOW_19_in_ruleBusinessClass806); 

                        	newLeafNode(otherlv_8, grammarAccess.getBusinessClassAccess().getLeftSquareBracketKeyword_6_1());
                        
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:469:1: ( (lv_businessRules_9_0= ruleAbstractBusinessRule ) )*
                    loop9:
                    do {
                        int alt9=2;
                        int LA9_0 = input.LA(1);

                        if ( ((LA9_0>=RULE_STRING && LA9_0<=RULE_ID)||LA9_0==24) ) {
                            alt9=1;
                        }


                        switch (alt9) {
                    	case 1 :
                    	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:470:1: (lv_businessRules_9_0= ruleAbstractBusinessRule )
                    	    {
                    	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:470:1: (lv_businessRules_9_0= ruleAbstractBusinessRule )
                    	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:471:3: lv_businessRules_9_0= ruleAbstractBusinessRule
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getBusinessClassAccess().getBusinessRulesAbstractBusinessRuleParserRuleCall_6_2_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleAbstractBusinessRule_in_ruleBusinessClass827);
                    	    lv_businessRules_9_0=ruleAbstractBusinessRule();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getBusinessClassRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"businessRules",
                    	            		lv_businessRules_9_0, 
                    	            		"AbstractBusinessRule");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop9;
                        }
                    } while (true);

                    otherlv_10=(Token)match(input,21,FOLLOW_21_in_ruleBusinessClass840); 

                        	newLeafNode(otherlv_10, grammarAccess.getBusinessClassAccess().getRightSquareBracketKeyword_6_3());
                        

                    }
                    break;

            }

            otherlv_11=(Token)match(input,21,FOLLOW_21_in_ruleBusinessClass854); 

                	newLeafNode(otherlv_11, grammarAccess.getBusinessClassAccess().getRightSquareBracketKeyword_7());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBusinessClass"


    // $ANTLR start "entryRuleEnumeration"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:503:1: entryRuleEnumeration returns [EObject current=null] : iv_ruleEnumeration= ruleEnumeration EOF ;
    public final EObject entryRuleEnumeration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumeration = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:504:2: (iv_ruleEnumeration= ruleEnumeration EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:505:2: iv_ruleEnumeration= ruleEnumeration EOF
            {
             newCompositeNode(grammarAccess.getEnumerationRule()); 
            pushFollow(FOLLOW_ruleEnumeration_in_entryRuleEnumeration890);
            iv_ruleEnumeration=ruleEnumeration();

            state._fsp--;

             current =iv_ruleEnumeration; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEnumeration900); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumeration"


    // $ANTLR start "ruleEnumeration"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:512:1: ruleEnumeration returns [EObject current=null] : ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'enumeration' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '[' ( (lv_enumerationLiterals_4_0= ruleEnumerationLiteral ) )+ otherlv_5= ']' ) ;
    public final EObject ruleEnumeration() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_enumerationLiterals_4_0 = null;


         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:515:28: ( ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'enumeration' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '[' ( (lv_enumerationLiterals_4_0= ruleEnumerationLiteral ) )+ otherlv_5= ']' ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:516:1: ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'enumeration' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '[' ( (lv_enumerationLiterals_4_0= ruleEnumerationLiteral ) )+ otherlv_5= ']' )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:516:1: ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'enumeration' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '[' ( (lv_enumerationLiterals_4_0= ruleEnumerationLiteral ) )+ otherlv_5= ']' )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:516:2: ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'enumeration' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '[' ( (lv_enumerationLiterals_4_0= ruleEnumerationLiteral ) )+ otherlv_5= ']'
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:516:2: ( (lv_description_0_0= RULE_STRING ) )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==RULE_STRING) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:517:1: (lv_description_0_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:517:1: (lv_description_0_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:518:3: lv_description_0_0= RULE_STRING
                    {
                    lv_description_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleEnumeration942); 

                    			newLeafNode(lv_description_0_0, grammarAccess.getEnumerationAccess().getDescriptionSTRINGTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getEnumerationRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_0_0, 
                            		"STRING");
                    	    

                    }


                    }
                    break;

            }

            otherlv_1=(Token)match(input,22,FOLLOW_22_in_ruleEnumeration960); 

                	newLeafNode(otherlv_1, grammarAccess.getEnumerationAccess().getEnumerationKeyword_1());
                
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:538:1: ( (lv_name_2_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:539:1: (lv_name_2_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:539:1: (lv_name_2_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:540:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEnumeration977); 

            			newLeafNode(lv_name_2_0, grammarAccess.getEnumerationAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEnumerationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,19,FOLLOW_19_in_ruleEnumeration994); 

                	newLeafNode(otherlv_3, grammarAccess.getEnumerationAccess().getLeftSquareBracketKeyword_3());
                
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:560:1: ( (lv_enumerationLiterals_4_0= ruleEnumerationLiteral ) )+
            int cnt12=0;
            loop12:
            do {
                int alt12=2;
                int LA12_0 = input.LA(1);

                if ( (LA12_0==RULE_ID) ) {
                    alt12=1;
                }


                switch (alt12) {
            	case 1 :
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:561:1: (lv_enumerationLiterals_4_0= ruleEnumerationLiteral )
            	    {
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:561:1: (lv_enumerationLiterals_4_0= ruleEnumerationLiteral )
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:562:3: lv_enumerationLiterals_4_0= ruleEnumerationLiteral
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getEnumerationAccess().getEnumerationLiteralsEnumerationLiteralParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleEnumerationLiteral_in_ruleEnumeration1015);
            	    lv_enumerationLiterals_4_0=ruleEnumerationLiteral();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getEnumerationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"enumerationLiterals",
            	            		lv_enumerationLiterals_4_0, 
            	            		"EnumerationLiteral");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt12 >= 1 ) break loop12;
                        EarlyExitException eee =
                            new EarlyExitException(12, input);
                        throw eee;
                }
                cnt12++;
            } while (true);

            otherlv_5=(Token)match(input,21,FOLLOW_21_in_ruleEnumeration1028); 

                	newLeafNode(otherlv_5, grammarAccess.getEnumerationAccess().getRightSquareBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumeration"


    // $ANTLR start "entryRuleEnumerationLiteral"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:590:1: entryRuleEnumerationLiteral returns [EObject current=null] : iv_ruleEnumerationLiteral= ruleEnumerationLiteral EOF ;
    public final EObject entryRuleEnumerationLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumerationLiteral = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:591:2: (iv_ruleEnumerationLiteral= ruleEnumerationLiteral EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:592:2: iv_ruleEnumerationLiteral= ruleEnumerationLiteral EOF
            {
             newCompositeNode(grammarAccess.getEnumerationLiteralRule()); 
            pushFollow(FOLLOW_ruleEnumerationLiteral_in_entryRuleEnumerationLiteral1064);
            iv_ruleEnumerationLiteral=ruleEnumerationLiteral();

            state._fsp--;

             current =iv_ruleEnumerationLiteral; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEnumerationLiteral1074); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumerationLiteral"


    // $ANTLR start "ruleEnumerationLiteral"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:599:1: ruleEnumerationLiteral returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_persistedValue_2_0= RULE_INT ) ) ) otherlv_3= ';' ) ;
    public final EObject ruleEnumerationLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token lv_persistedValue_2_0=null;
        Token otherlv_3=null;

         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:602:28: ( ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_persistedValue_2_0= RULE_INT ) ) ) otherlv_3= ';' ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:603:1: ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_persistedValue_2_0= RULE_INT ) ) ) otherlv_3= ';' )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:603:1: ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_persistedValue_2_0= RULE_INT ) ) ) otherlv_3= ';' )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:603:2: ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_persistedValue_2_0= RULE_INT ) ) ) otherlv_3= ';'
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:603:2: ( (lv_name_0_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:604:1: (lv_name_0_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:604:1: (lv_name_0_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:605:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEnumerationLiteral1116); 

            			newLeafNode(lv_name_0_0, grammarAccess.getEnumerationLiteralAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEnumerationLiteralRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:621:2: (otherlv_1= '=' ( (lv_persistedValue_2_0= RULE_INT ) ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:621:4: otherlv_1= '=' ( (lv_persistedValue_2_0= RULE_INT ) )
            {
            otherlv_1=(Token)match(input,23,FOLLOW_23_in_ruleEnumerationLiteral1134); 

                	newLeafNode(otherlv_1, grammarAccess.getEnumerationLiteralAccess().getEqualsSignKeyword_1_0());
                
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:625:1: ( (lv_persistedValue_2_0= RULE_INT ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:626:1: (lv_persistedValue_2_0= RULE_INT )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:626:1: (lv_persistedValue_2_0= RULE_INT )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:627:3: lv_persistedValue_2_0= RULE_INT
            {
            lv_persistedValue_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleEnumerationLiteral1151); 

            			newLeafNode(lv_persistedValue_2_0, grammarAccess.getEnumerationLiteralAccess().getPersistedValueINTTerminalRuleCall_1_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEnumerationLiteralRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"persistedValue",
                    		lv_persistedValue_2_0, 
                    		"INT");
            	    

            }


            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_12_in_ruleEnumerationLiteral1169); 

                	newLeafNode(otherlv_3, grammarAccess.getEnumerationLiteralAccess().getSemicolonKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumerationLiteral"


    // $ANTLR start "entryRuleAbstractBusinessRule"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:655:1: entryRuleAbstractBusinessRule returns [EObject current=null] : iv_ruleAbstractBusinessRule= ruleAbstractBusinessRule EOF ;
    public final EObject entryRuleAbstractBusinessRule() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAbstractBusinessRule = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:656:2: (iv_ruleAbstractBusinessRule= ruleAbstractBusinessRule EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:657:2: iv_ruleAbstractBusinessRule= ruleAbstractBusinessRule EOF
            {
             newCompositeNode(grammarAccess.getAbstractBusinessRuleRule()); 
            pushFollow(FOLLOW_ruleAbstractBusinessRule_in_entryRuleAbstractBusinessRule1205);
            iv_ruleAbstractBusinessRule=ruleAbstractBusinessRule();

            state._fsp--;

             current =iv_ruleAbstractBusinessRule; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAbstractBusinessRule1215); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAbstractBusinessRule"


    // $ANTLR start "ruleAbstractBusinessRule"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:664:1: ruleAbstractBusinessRule returns [EObject current=null] : (this_BusinessRule_0= ruleBusinessRule | this_UniqueRule_1= ruleUniqueRule ) ;
    public final EObject ruleAbstractBusinessRule() throws RecognitionException {
        EObject current = null;

        EObject this_BusinessRule_0 = null;

        EObject this_UniqueRule_1 = null;


         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:667:28: ( (this_BusinessRule_0= ruleBusinessRule | this_UniqueRule_1= ruleUniqueRule ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:668:1: (this_BusinessRule_0= ruleBusinessRule | this_UniqueRule_1= ruleUniqueRule )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:668:1: (this_BusinessRule_0= ruleBusinessRule | this_UniqueRule_1= ruleUniqueRule )
            int alt13=2;
            switch ( input.LA(1) ) {
            case RULE_STRING:
                {
                int LA13_1 = input.LA(2);

                if ( (LA13_1==24) ) {
                    alt13=2;
                }
                else if ( (LA13_1==RULE_ID) ) {
                    alt13=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 13, 1, input);

                    throw nvae;
                }
                }
                break;
            case RULE_ID:
                {
                alt13=1;
                }
                break;
            case 24:
                {
                alt13=2;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 13, 0, input);

                throw nvae;
            }

            switch (alt13) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:669:5: this_BusinessRule_0= ruleBusinessRule
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractBusinessRuleAccess().getBusinessRuleParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleBusinessRule_in_ruleAbstractBusinessRule1262);
                    this_BusinessRule_0=ruleBusinessRule();

                    state._fsp--;

                     
                            current = this_BusinessRule_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:679:5: this_UniqueRule_1= ruleUniqueRule
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractBusinessRuleAccess().getUniqueRuleParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleUniqueRule_in_ruleAbstractBusinessRule1289);
                    this_UniqueRule_1=ruleUniqueRule();

                    state._fsp--;

                     
                            current = this_UniqueRule_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAbstractBusinessRule"


    // $ANTLR start "entryRuleBusinessRule"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:695:1: entryRuleBusinessRule returns [EObject current=null] : iv_ruleBusinessRule= ruleBusinessRule EOF ;
    public final EObject entryRuleBusinessRule() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBusinessRule = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:696:2: (iv_ruleBusinessRule= ruleBusinessRule EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:697:2: iv_ruleBusinessRule= ruleBusinessRule EOF
            {
             newCompositeNode(grammarAccess.getBusinessRuleRule()); 
            pushFollow(FOLLOW_ruleBusinessRule_in_entryRuleBusinessRule1324);
            iv_ruleBusinessRule=ruleBusinessRule();

            state._fsp--;

             current =iv_ruleBusinessRule; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBusinessRule1334); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBusinessRule"


    // $ANTLR start "ruleBusinessRule"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:704:1: ruleBusinessRule returns [EObject current=null] : ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' ) ;
    public final EObject ruleBusinessRule() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;

         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:707:28: ( ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:708:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:708:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';' )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:708:2: ( (lv_description_0_0= RULE_STRING ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ';'
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:708:2: ( (lv_description_0_0= RULE_STRING ) )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==RULE_STRING) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:709:1: (lv_description_0_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:709:1: (lv_description_0_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:710:3: lv_description_0_0= RULE_STRING
                    {
                    lv_description_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleBusinessRule1376); 

                    			newLeafNode(lv_description_0_0, grammarAccess.getBusinessRuleAccess().getDescriptionSTRINGTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getBusinessRuleRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_0_0, 
                            		"STRING");
                    	    

                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:726:3: ( (lv_name_1_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:727:1: (lv_name_1_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:727:1: (lv_name_1_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:728:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleBusinessRule1399); 

            			newLeafNode(lv_name_1_0, grammarAccess.getBusinessRuleAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getBusinessRuleRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleBusinessRule1416); 

                	newLeafNode(otherlv_2, grammarAccess.getBusinessRuleAccess().getSemicolonKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBusinessRule"


    // $ANTLR start "entryRuleUniqueRule"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:756:1: entryRuleUniqueRule returns [EObject current=null] : iv_ruleUniqueRule= ruleUniqueRule EOF ;
    public final EObject entryRuleUniqueRule() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUniqueRule = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:757:2: (iv_ruleUniqueRule= ruleUniqueRule EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:758:2: iv_ruleUniqueRule= ruleUniqueRule EOF
            {
             newCompositeNode(grammarAccess.getUniqueRuleRule()); 
            pushFollow(FOLLOW_ruleUniqueRule_in_entryRuleUniqueRule1452);
            iv_ruleUniqueRule=ruleUniqueRule();

            state._fsp--;

             current =iv_ruleUniqueRule; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleUniqueRule1462); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUniqueRule"


    // $ANTLR start "ruleUniqueRule"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:765:1: ruleUniqueRule returns [EObject current=null] : ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'unique' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '[' ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )* otherlv_7= ']' ) ;
    public final EObject ruleUniqueRule() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;

         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:768:28: ( ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'unique' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '[' ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )* otherlv_7= ']' ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:769:1: ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'unique' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '[' ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )* otherlv_7= ']' )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:769:1: ( ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'unique' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '[' ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )* otherlv_7= ']' )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:769:2: ( (lv_description_0_0= RULE_STRING ) )? otherlv_1= 'unique' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '[' ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )* otherlv_7= ']'
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:769:2: ( (lv_description_0_0= RULE_STRING ) )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==RULE_STRING) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:770:1: (lv_description_0_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:770:1: (lv_description_0_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:771:3: lv_description_0_0= RULE_STRING
                    {
                    lv_description_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleUniqueRule1504); 

                    			newLeafNode(lv_description_0_0, grammarAccess.getUniqueRuleAccess().getDescriptionSTRINGTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getUniqueRuleRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_0_0, 
                            		"STRING");
                    	    

                    }


                    }
                    break;

            }

            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleUniqueRule1522); 

                	newLeafNode(otherlv_1, grammarAccess.getUniqueRuleAccess().getUniqueKeyword_1());
                
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:791:1: ( (lv_name_2_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:792:1: (lv_name_2_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:792:1: (lv_name_2_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:793:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleUniqueRule1539); 

            			newLeafNode(lv_name_2_0, grammarAccess.getUniqueRuleAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getUniqueRuleRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,19,FOLLOW_19_in_ruleUniqueRule1556); 

                	newLeafNode(otherlv_3, grammarAccess.getUniqueRuleAccess().getLeftSquareBracketKeyword_3());
                
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:813:1: ( (otherlv_4= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:814:1: (otherlv_4= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:814:1: (otherlv_4= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:815:3: otherlv_4= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getUniqueRuleRule());
            	        }
                    
            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleUniqueRule1576); 

            		newLeafNode(otherlv_4, grammarAccess.getUniqueRuleAccess().getPropertiesPropertyCrossReference_4_0()); 
            	

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:826:2: (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==25) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:826:4: otherlv_5= ',' ( (otherlv_6= RULE_ID ) )
            	    {
            	    otherlv_5=(Token)match(input,25,FOLLOW_25_in_ruleUniqueRule1589); 

            	        	newLeafNode(otherlv_5, grammarAccess.getUniqueRuleAccess().getCommaKeyword_5_0());
            	        
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:830:1: ( (otherlv_6= RULE_ID ) )
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:831:1: (otherlv_6= RULE_ID )
            	    {
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:831:1: (otherlv_6= RULE_ID )
            	    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:832:3: otherlv_6= RULE_ID
            	    {

            	    			if (current==null) {
            	    	            current = createModelElement(grammarAccess.getUniqueRuleRule());
            	    	        }
            	            
            	    otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleUniqueRule1609); 

            	    		newLeafNode(otherlv_6, grammarAccess.getUniqueRuleAccess().getPropertiesPropertyCrossReference_5_1_0()); 
            	    	

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);

            otherlv_7=(Token)match(input,21,FOLLOW_21_in_ruleUniqueRule1623); 

                	newLeafNode(otherlv_7, grammarAccess.getUniqueRuleAccess().getRightSquareBracketKeyword_6());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUniqueRule"


    // $ANTLR start "entryRuleProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:855:1: entryRuleProperty returns [EObject current=null] : iv_ruleProperty= ruleProperty EOF ;
    public final EObject entryRuleProperty() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProperty = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:856:2: (iv_ruleProperty= ruleProperty EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:857:2: iv_ruleProperty= ruleProperty EOF
            {
             newCompositeNode(grammarAccess.getPropertyRule()); 
            pushFollow(FOLLOW_ruleProperty_in_entryRuleProperty1659);
            iv_ruleProperty=ruleProperty();

            state._fsp--;

             current =iv_ruleProperty; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleProperty1669); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleProperty"


    // $ANTLR start "ruleProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:864:1: ruleProperty returns [EObject current=null] : ( (this_BoolProperty_0= ruleBoolProperty | this_StringProperty_1= ruleStringProperty | this_DateTimeProperty_2= ruleDateTimeProperty | this_IntegerProperty_3= ruleIntegerProperty | this_DecimalProperty_4= ruleDecimalProperty | this_EnumerationProperty_5= ruleEnumerationProperty ) ( (lv_nullable_6_0= 'nullable' ) )? ( ( (lv_derived_7_0= 'derived' ) ) ( (lv_writable_8_0= 'writable' ) )? )? otherlv_9= ';' ) ;
    public final EObject ruleProperty() throws RecognitionException {
        EObject current = null;

        Token lv_nullable_6_0=null;
        Token lv_derived_7_0=null;
        Token lv_writable_8_0=null;
        Token otherlv_9=null;
        EObject this_BoolProperty_0 = null;

        EObject this_StringProperty_1 = null;

        EObject this_DateTimeProperty_2 = null;

        EObject this_IntegerProperty_3 = null;

        EObject this_DecimalProperty_4 = null;

        EObject this_EnumerationProperty_5 = null;


         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:867:28: ( ( (this_BoolProperty_0= ruleBoolProperty | this_StringProperty_1= ruleStringProperty | this_DateTimeProperty_2= ruleDateTimeProperty | this_IntegerProperty_3= ruleIntegerProperty | this_DecimalProperty_4= ruleDecimalProperty | this_EnumerationProperty_5= ruleEnumerationProperty ) ( (lv_nullable_6_0= 'nullable' ) )? ( ( (lv_derived_7_0= 'derived' ) ) ( (lv_writable_8_0= 'writable' ) )? )? otherlv_9= ';' ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:868:1: ( (this_BoolProperty_0= ruleBoolProperty | this_StringProperty_1= ruleStringProperty | this_DateTimeProperty_2= ruleDateTimeProperty | this_IntegerProperty_3= ruleIntegerProperty | this_DecimalProperty_4= ruleDecimalProperty | this_EnumerationProperty_5= ruleEnumerationProperty ) ( (lv_nullable_6_0= 'nullable' ) )? ( ( (lv_derived_7_0= 'derived' ) ) ( (lv_writable_8_0= 'writable' ) )? )? otherlv_9= ';' )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:868:1: ( (this_BoolProperty_0= ruleBoolProperty | this_StringProperty_1= ruleStringProperty | this_DateTimeProperty_2= ruleDateTimeProperty | this_IntegerProperty_3= ruleIntegerProperty | this_DecimalProperty_4= ruleDecimalProperty | this_EnumerationProperty_5= ruleEnumerationProperty ) ( (lv_nullable_6_0= 'nullable' ) )? ( ( (lv_derived_7_0= 'derived' ) ) ( (lv_writable_8_0= 'writable' ) )? )? otherlv_9= ';' )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:868:2: (this_BoolProperty_0= ruleBoolProperty | this_StringProperty_1= ruleStringProperty | this_DateTimeProperty_2= ruleDateTimeProperty | this_IntegerProperty_3= ruleIntegerProperty | this_DecimalProperty_4= ruleDecimalProperty | this_EnumerationProperty_5= ruleEnumerationProperty ) ( (lv_nullable_6_0= 'nullable' ) )? ( ( (lv_derived_7_0= 'derived' ) ) ( (lv_writable_8_0= 'writable' ) )? )? otherlv_9= ';'
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:868:2: (this_BoolProperty_0= ruleBoolProperty | this_StringProperty_1= ruleStringProperty | this_DateTimeProperty_2= ruleDateTimeProperty | this_IntegerProperty_3= ruleIntegerProperty | this_DecimalProperty_4= ruleDecimalProperty | this_EnumerationProperty_5= ruleEnumerationProperty )
            int alt17=6;
            switch ( input.LA(1) ) {
            case RULE_STRING:
                {
                switch ( input.LA(2) ) {
                case 33:
                    {
                    alt17=2;
                    }
                    break;
                case 38:
                    {
                    alt17=4;
                    }
                    break;
                case RULE_ID:
                    {
                    alt17=6;
                    }
                    break;
                case 29:
                    {
                    alt17=1;
                    }
                    break;
                case 41:
                    {
                    alt17=5;
                    }
                    break;
                case 37:
                    {
                    alt17=3;
                    }
                    break;
                default:
                    NoViableAltException nvae =
                        new NoViableAltException("", 17, 1, input);

                    throw nvae;
                }

                }
                break;
            case 29:
                {
                alt17=1;
                }
                break;
            case 33:
                {
                alt17=2;
                }
                break;
            case 37:
                {
                alt17=3;
                }
                break;
            case 38:
                {
                alt17=4;
                }
                break;
            case 41:
                {
                alt17=5;
                }
                break;
            case RULE_ID:
                {
                alt17=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;
            }

            switch (alt17) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:869:5: this_BoolProperty_0= ruleBoolProperty
                    {
                     
                            newCompositeNode(grammarAccess.getPropertyAccess().getBoolPropertyParserRuleCall_0_0()); 
                        
                    pushFollow(FOLLOW_ruleBoolProperty_in_ruleProperty1717);
                    this_BoolProperty_0=ruleBoolProperty();

                    state._fsp--;

                     
                            current = this_BoolProperty_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:879:5: this_StringProperty_1= ruleStringProperty
                    {
                     
                            newCompositeNode(grammarAccess.getPropertyAccess().getStringPropertyParserRuleCall_0_1()); 
                        
                    pushFollow(FOLLOW_ruleStringProperty_in_ruleProperty1744);
                    this_StringProperty_1=ruleStringProperty();

                    state._fsp--;

                     
                            current = this_StringProperty_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:889:5: this_DateTimeProperty_2= ruleDateTimeProperty
                    {
                     
                            newCompositeNode(grammarAccess.getPropertyAccess().getDateTimePropertyParserRuleCall_0_2()); 
                        
                    pushFollow(FOLLOW_ruleDateTimeProperty_in_ruleProperty1771);
                    this_DateTimeProperty_2=ruleDateTimeProperty();

                    state._fsp--;

                     
                            current = this_DateTimeProperty_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:899:5: this_IntegerProperty_3= ruleIntegerProperty
                    {
                     
                            newCompositeNode(grammarAccess.getPropertyAccess().getIntegerPropertyParserRuleCall_0_3()); 
                        
                    pushFollow(FOLLOW_ruleIntegerProperty_in_ruleProperty1798);
                    this_IntegerProperty_3=ruleIntegerProperty();

                    state._fsp--;

                     
                            current = this_IntegerProperty_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:909:5: this_DecimalProperty_4= ruleDecimalProperty
                    {
                     
                            newCompositeNode(grammarAccess.getPropertyAccess().getDecimalPropertyParserRuleCall_0_4()); 
                        
                    pushFollow(FOLLOW_ruleDecimalProperty_in_ruleProperty1825);
                    this_DecimalProperty_4=ruleDecimalProperty();

                    state._fsp--;

                     
                            current = this_DecimalProperty_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 6 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:919:5: this_EnumerationProperty_5= ruleEnumerationProperty
                    {
                     
                            newCompositeNode(grammarAccess.getPropertyAccess().getEnumerationPropertyParserRuleCall_0_5()); 
                        
                    pushFollow(FOLLOW_ruleEnumerationProperty_in_ruleProperty1852);
                    this_EnumerationProperty_5=ruleEnumerationProperty();

                    state._fsp--;

                     
                            current = this_EnumerationProperty_5; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:927:2: ( (lv_nullable_6_0= 'nullable' ) )?
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==26) ) {
                alt18=1;
            }
            switch (alt18) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:928:1: (lv_nullable_6_0= 'nullable' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:928:1: (lv_nullable_6_0= 'nullable' )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:929:3: lv_nullable_6_0= 'nullable'
                    {
                    lv_nullable_6_0=(Token)match(input,26,FOLLOW_26_in_ruleProperty1870); 

                            newLeafNode(lv_nullable_6_0, grammarAccess.getPropertyAccess().getNullableNullableKeyword_1_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getPropertyRule());
                    	        }
                           		setWithLastConsumed(current, "nullable", true, "nullable");
                    	    

                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:942:3: ( ( (lv_derived_7_0= 'derived' ) ) ( (lv_writable_8_0= 'writable' ) )? )?
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==27) ) {
                alt20=1;
            }
            switch (alt20) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:942:4: ( (lv_derived_7_0= 'derived' ) ) ( (lv_writable_8_0= 'writable' ) )?
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:942:4: ( (lv_derived_7_0= 'derived' ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:943:1: (lv_derived_7_0= 'derived' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:943:1: (lv_derived_7_0= 'derived' )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:944:3: lv_derived_7_0= 'derived'
                    {
                    lv_derived_7_0=(Token)match(input,27,FOLLOW_27_in_ruleProperty1903); 

                            newLeafNode(lv_derived_7_0, grammarAccess.getPropertyAccess().getDerivedDerivedKeyword_2_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getPropertyRule());
                    	        }
                           		setWithLastConsumed(current, "derived", true, "derived");
                    	    

                    }


                    }

                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:957:2: ( (lv_writable_8_0= 'writable' ) )?
                    int alt19=2;
                    int LA19_0 = input.LA(1);

                    if ( (LA19_0==28) ) {
                        alt19=1;
                    }
                    switch (alt19) {
                        case 1 :
                            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:958:1: (lv_writable_8_0= 'writable' )
                            {
                            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:958:1: (lv_writable_8_0= 'writable' )
                            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:959:3: lv_writable_8_0= 'writable'
                            {
                            lv_writable_8_0=(Token)match(input,28,FOLLOW_28_in_ruleProperty1934); 

                                    newLeafNode(lv_writable_8_0, grammarAccess.getPropertyAccess().getWritableWritableKeyword_2_1_0());
                                

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getPropertyRule());
                            	        }
                                   		setWithLastConsumed(current, "writable", true, "writable");
                            	    

                            }


                            }
                            break;

                    }


                    }
                    break;

            }

            otherlv_9=(Token)match(input,12,FOLLOW_12_in_ruleProperty1962); 

                	newLeafNode(otherlv_9, grammarAccess.getPropertyAccess().getSemicolonKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProperty"


    // $ANTLR start "entryRuleBoolProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:984:1: entryRuleBoolProperty returns [EObject current=null] : iv_ruleBoolProperty= ruleBoolProperty EOF ;
    public final EObject entryRuleBoolProperty() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBoolProperty = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:985:2: (iv_ruleBoolProperty= ruleBoolProperty EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:986:2: iv_ruleBoolProperty= ruleBoolProperty EOF
            {
             newCompositeNode(grammarAccess.getBoolPropertyRule()); 
            pushFollow(FOLLOW_ruleBoolProperty_in_entryRuleBoolProperty1998);
            iv_ruleBoolProperty=ruleBoolProperty();

            state._fsp--;

             current =iv_ruleBoolProperty; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBoolProperty2008); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBoolProperty"


    // $ANTLR start "ruleBoolProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:993:1: ruleBoolProperty returns [EObject current=null] : ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'boolean' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( ( (lv_defaultValue_4_0= 'true' ) ) | otherlv_5= 'false' ) )? ) ;
    public final EObject ruleBoolProperty() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;
        Token lv_dataType_1_0=null;
        Token lv_name_2_0=null;
        Token lv_hasDefault_3_0=null;
        Token lv_defaultValue_4_0=null;
        Token otherlv_5=null;

         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:996:28: ( ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'boolean' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( ( (lv_defaultValue_4_0= 'true' ) ) | otherlv_5= 'false' ) )? ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:997:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'boolean' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( ( (lv_defaultValue_4_0= 'true' ) ) | otherlv_5= 'false' ) )? )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:997:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'boolean' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( ( (lv_defaultValue_4_0= 'true' ) ) | otherlv_5= 'false' ) )? )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:997:2: ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'boolean' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( ( (lv_defaultValue_4_0= 'true' ) ) | otherlv_5= 'false' ) )?
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:997:2: ( (lv_description_0_0= RULE_STRING ) )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==RULE_STRING) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:998:1: (lv_description_0_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:998:1: (lv_description_0_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:999:3: lv_description_0_0= RULE_STRING
                    {
                    lv_description_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleBoolProperty2050); 

                    			newLeafNode(lv_description_0_0, grammarAccess.getBoolPropertyAccess().getDescriptionSTRINGTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getBoolPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_0_0, 
                            		"STRING");
                    	    

                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1015:3: ( (lv_dataType_1_0= 'boolean' ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1016:1: (lv_dataType_1_0= 'boolean' )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1016:1: (lv_dataType_1_0= 'boolean' )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1017:3: lv_dataType_1_0= 'boolean'
            {
            lv_dataType_1_0=(Token)match(input,29,FOLLOW_29_in_ruleBoolProperty2074); 

                    newLeafNode(lv_dataType_1_0, grammarAccess.getBoolPropertyAccess().getDataTypeBooleanKeyword_1_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getBoolPropertyRule());
            	        }
                   		setWithLastConsumed(current, "dataType", lv_dataType_1_0, "boolean");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1030:2: ( (lv_name_2_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1031:1: (lv_name_2_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1031:1: (lv_name_2_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1032:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleBoolProperty2104); 

            			newLeafNode(lv_name_2_0, grammarAccess.getBoolPropertyAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getBoolPropertyRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1048:2: ( ( (lv_hasDefault_3_0= 'default' ) ) ( ( (lv_defaultValue_4_0= 'true' ) ) | otherlv_5= 'false' ) )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==30) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1048:3: ( (lv_hasDefault_3_0= 'default' ) ) ( ( (lv_defaultValue_4_0= 'true' ) ) | otherlv_5= 'false' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1048:3: ( (lv_hasDefault_3_0= 'default' ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1049:1: (lv_hasDefault_3_0= 'default' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1049:1: (lv_hasDefault_3_0= 'default' )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1050:3: lv_hasDefault_3_0= 'default'
                    {
                    lv_hasDefault_3_0=(Token)match(input,30,FOLLOW_30_in_ruleBoolProperty2128); 

                            newLeafNode(lv_hasDefault_3_0, grammarAccess.getBoolPropertyAccess().getHasDefaultDefaultKeyword_3_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getBoolPropertyRule());
                    	        }
                           		setWithLastConsumed(current, "hasDefault", true, "default");
                    	    

                    }


                    }

                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1063:2: ( ( (lv_defaultValue_4_0= 'true' ) ) | otherlv_5= 'false' )
                    int alt22=2;
                    int LA22_0 = input.LA(1);

                    if ( (LA22_0==31) ) {
                        alt22=1;
                    }
                    else if ( (LA22_0==32) ) {
                        alt22=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 22, 0, input);

                        throw nvae;
                    }
                    switch (alt22) {
                        case 1 :
                            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1063:3: ( (lv_defaultValue_4_0= 'true' ) )
                            {
                            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1063:3: ( (lv_defaultValue_4_0= 'true' ) )
                            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1064:1: (lv_defaultValue_4_0= 'true' )
                            {
                            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1064:1: (lv_defaultValue_4_0= 'true' )
                            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1065:3: lv_defaultValue_4_0= 'true'
                            {
                            lv_defaultValue_4_0=(Token)match(input,31,FOLLOW_31_in_ruleBoolProperty2160); 

                                    newLeafNode(lv_defaultValue_4_0, grammarAccess.getBoolPropertyAccess().getDefaultValueTrueKeyword_3_1_0_0());
                                

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getBoolPropertyRule());
                            	        }
                                   		setWithLastConsumed(current, "defaultValue", true, "true");
                            	    

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1079:7: otherlv_5= 'false'
                            {
                            otherlv_5=(Token)match(input,32,FOLLOW_32_in_ruleBoolProperty2191); 

                                	newLeafNode(otherlv_5, grammarAccess.getBoolPropertyAccess().getFalseKeyword_3_1_1());
                                

                            }
                            break;

                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBoolProperty"


    // $ANTLR start "entryRuleStringProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1091:1: entryRuleStringProperty returns [EObject current=null] : iv_ruleStringProperty= ruleStringProperty EOF ;
    public final EObject entryRuleStringProperty() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStringProperty = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1092:2: (iv_ruleStringProperty= ruleStringProperty EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1093:2: iv_ruleStringProperty= ruleStringProperty EOF
            {
             newCompositeNode(grammarAccess.getStringPropertyRule()); 
            pushFollow(FOLLOW_ruleStringProperty_in_entryRuleStringProperty2230);
            iv_ruleStringProperty=ruleStringProperty();

            state._fsp--;

             current =iv_ruleStringProperty; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStringProperty2240); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStringProperty"


    // $ANTLR start "ruleStringProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1100:1: ruleStringProperty returns [EObject current=null] : ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'string' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) ) )? (otherlv_5= 'minlength' ( (lv_minLength_6_0= RULE_INT ) ) )? (otherlv_7= 'maxlength' ( (lv_maxLength_8_0= RULE_INT ) ) )? (otherlv_9= 'regexp' ( (lv_regularExpression_10_0= RULE_STRING ) ) )? ) ;
    public final EObject ruleStringProperty() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;
        Token lv_dataType_1_0=null;
        Token lv_name_2_0=null;
        Token lv_hasDefault_3_0=null;
        Token lv_defaultValue_4_0=null;
        Token otherlv_5=null;
        Token lv_minLength_6_0=null;
        Token otherlv_7=null;
        Token lv_maxLength_8_0=null;
        Token otherlv_9=null;
        Token lv_regularExpression_10_0=null;

         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1103:28: ( ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'string' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) ) )? (otherlv_5= 'minlength' ( (lv_minLength_6_0= RULE_INT ) ) )? (otherlv_7= 'maxlength' ( (lv_maxLength_8_0= RULE_INT ) ) )? (otherlv_9= 'regexp' ( (lv_regularExpression_10_0= RULE_STRING ) ) )? ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1104:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'string' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) ) )? (otherlv_5= 'minlength' ( (lv_minLength_6_0= RULE_INT ) ) )? (otherlv_7= 'maxlength' ( (lv_maxLength_8_0= RULE_INT ) ) )? (otherlv_9= 'regexp' ( (lv_regularExpression_10_0= RULE_STRING ) ) )? )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1104:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'string' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) ) )? (otherlv_5= 'minlength' ( (lv_minLength_6_0= RULE_INT ) ) )? (otherlv_7= 'maxlength' ( (lv_maxLength_8_0= RULE_INT ) ) )? (otherlv_9= 'regexp' ( (lv_regularExpression_10_0= RULE_STRING ) ) )? )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1104:2: ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'string' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) ) )? (otherlv_5= 'minlength' ( (lv_minLength_6_0= RULE_INT ) ) )? (otherlv_7= 'maxlength' ( (lv_maxLength_8_0= RULE_INT ) ) )? (otherlv_9= 'regexp' ( (lv_regularExpression_10_0= RULE_STRING ) ) )?
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1104:2: ( (lv_description_0_0= RULE_STRING ) )?
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==RULE_STRING) ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1105:1: (lv_description_0_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1105:1: (lv_description_0_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1106:3: lv_description_0_0= RULE_STRING
                    {
                    lv_description_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStringProperty2282); 

                    			newLeafNode(lv_description_0_0, grammarAccess.getStringPropertyAccess().getDescriptionSTRINGTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getStringPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_0_0, 
                            		"STRING");
                    	    

                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1122:3: ( (lv_dataType_1_0= 'string' ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1123:1: (lv_dataType_1_0= 'string' )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1123:1: (lv_dataType_1_0= 'string' )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1124:3: lv_dataType_1_0= 'string'
            {
            lv_dataType_1_0=(Token)match(input,33,FOLLOW_33_in_ruleStringProperty2306); 

                    newLeafNode(lv_dataType_1_0, grammarAccess.getStringPropertyAccess().getDataTypeStringKeyword_1_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getStringPropertyRule());
            	        }
                   		setWithLastConsumed(current, "dataType", lv_dataType_1_0, "string");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1137:2: ( (lv_name_2_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1138:1: (lv_name_2_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1138:1: (lv_name_2_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1139:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStringProperty2336); 

            			newLeafNode(lv_name_2_0, grammarAccess.getStringPropertyAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getStringPropertyRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1155:2: ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) ) )?
            int alt25=2;
            int LA25_0 = input.LA(1);

            if ( (LA25_0==30) ) {
                alt25=1;
            }
            switch (alt25) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1155:3: ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1155:3: ( (lv_hasDefault_3_0= 'default' ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1156:1: (lv_hasDefault_3_0= 'default' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1156:1: (lv_hasDefault_3_0= 'default' )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1157:3: lv_hasDefault_3_0= 'default'
                    {
                    lv_hasDefault_3_0=(Token)match(input,30,FOLLOW_30_in_ruleStringProperty2360); 

                            newLeafNode(lv_hasDefault_3_0, grammarAccess.getStringPropertyAccess().getHasDefaultDefaultKeyword_3_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getStringPropertyRule());
                    	        }
                           		setWithLastConsumed(current, "hasDefault", true, "default");
                    	    

                    }


                    }

                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1170:2: ( (lv_defaultValue_4_0= RULE_STRING ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1171:1: (lv_defaultValue_4_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1171:1: (lv_defaultValue_4_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1172:3: lv_defaultValue_4_0= RULE_STRING
                    {
                    lv_defaultValue_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStringProperty2390); 

                    			newLeafNode(lv_defaultValue_4_0, grammarAccess.getStringPropertyAccess().getDefaultValueSTRINGTerminalRuleCall_3_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getStringPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"defaultValue",
                            		lv_defaultValue_4_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1188:4: (otherlv_5= 'minlength' ( (lv_minLength_6_0= RULE_INT ) ) )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==34) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1188:6: otherlv_5= 'minlength' ( (lv_minLength_6_0= RULE_INT ) )
                    {
                    otherlv_5=(Token)match(input,34,FOLLOW_34_in_ruleStringProperty2410); 

                        	newLeafNode(otherlv_5, grammarAccess.getStringPropertyAccess().getMinlengthKeyword_4_0());
                        
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1192:1: ( (lv_minLength_6_0= RULE_INT ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1193:1: (lv_minLength_6_0= RULE_INT )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1193:1: (lv_minLength_6_0= RULE_INT )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1194:3: lv_minLength_6_0= RULE_INT
                    {
                    lv_minLength_6_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStringProperty2427); 

                    			newLeafNode(lv_minLength_6_0, grammarAccess.getStringPropertyAccess().getMinLengthINTTerminalRuleCall_4_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getStringPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"minLength",
                            		lv_minLength_6_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1210:4: (otherlv_7= 'maxlength' ( (lv_maxLength_8_0= RULE_INT ) ) )?
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==35) ) {
                alt27=1;
            }
            switch (alt27) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1210:6: otherlv_7= 'maxlength' ( (lv_maxLength_8_0= RULE_INT ) )
                    {
                    otherlv_7=(Token)match(input,35,FOLLOW_35_in_ruleStringProperty2447); 

                        	newLeafNode(otherlv_7, grammarAccess.getStringPropertyAccess().getMaxlengthKeyword_5_0());
                        
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1214:1: ( (lv_maxLength_8_0= RULE_INT ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1215:1: (lv_maxLength_8_0= RULE_INT )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1215:1: (lv_maxLength_8_0= RULE_INT )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1216:3: lv_maxLength_8_0= RULE_INT
                    {
                    lv_maxLength_8_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStringProperty2464); 

                    			newLeafNode(lv_maxLength_8_0, grammarAccess.getStringPropertyAccess().getMaxLengthINTTerminalRuleCall_5_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getStringPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"maxLength",
                            		lv_maxLength_8_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1232:4: (otherlv_9= 'regexp' ( (lv_regularExpression_10_0= RULE_STRING ) ) )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==36) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1232:6: otherlv_9= 'regexp' ( (lv_regularExpression_10_0= RULE_STRING ) )
                    {
                    otherlv_9=(Token)match(input,36,FOLLOW_36_in_ruleStringProperty2484); 

                        	newLeafNode(otherlv_9, grammarAccess.getStringPropertyAccess().getRegexpKeyword_6_0());
                        
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1236:1: ( (lv_regularExpression_10_0= RULE_STRING ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1237:1: (lv_regularExpression_10_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1237:1: (lv_regularExpression_10_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1238:3: lv_regularExpression_10_0= RULE_STRING
                    {
                    lv_regularExpression_10_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStringProperty2501); 

                    			newLeafNode(lv_regularExpression_10_0, grammarAccess.getStringPropertyAccess().getRegularExpressionSTRINGTerminalRuleCall_6_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getStringPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"regularExpression",
                            		lv_regularExpression_10_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStringProperty"


    // $ANTLR start "entryRuleDateTimeProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1262:1: entryRuleDateTimeProperty returns [EObject current=null] : iv_ruleDateTimeProperty= ruleDateTimeProperty EOF ;
    public final EObject entryRuleDateTimeProperty() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDateTimeProperty = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1263:2: (iv_ruleDateTimeProperty= ruleDateTimeProperty EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1264:2: iv_ruleDateTimeProperty= ruleDateTimeProperty EOF
            {
             newCompositeNode(grammarAccess.getDateTimePropertyRule()); 
            pushFollow(FOLLOW_ruleDateTimeProperty_in_entryRuleDateTimeProperty2544);
            iv_ruleDateTimeProperty=ruleDateTimeProperty();

            state._fsp--;

             current =iv_ruleDateTimeProperty; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDateTimeProperty2554); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDateTimeProperty"


    // $ANTLR start "ruleDateTimeProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1271:1: ruleDateTimeProperty returns [EObject current=null] : ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'datetime' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) ) )? ) ;
    public final EObject ruleDateTimeProperty() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;
        Token lv_dataType_1_0=null;
        Token lv_name_2_0=null;
        Token lv_hasDefault_3_0=null;
        Token lv_defaultValue_4_0=null;

         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1274:28: ( ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'datetime' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) ) )? ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1275:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'datetime' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) ) )? )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1275:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'datetime' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) ) )? )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1275:2: ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'datetime' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) ) )?
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1275:2: ( (lv_description_0_0= RULE_STRING ) )?
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==RULE_STRING) ) {
                alt29=1;
            }
            switch (alt29) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1276:1: (lv_description_0_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1276:1: (lv_description_0_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1277:3: lv_description_0_0= RULE_STRING
                    {
                    lv_description_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDateTimeProperty2596); 

                    			newLeafNode(lv_description_0_0, grammarAccess.getDateTimePropertyAccess().getDescriptionSTRINGTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDateTimePropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_0_0, 
                            		"STRING");
                    	    

                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1293:3: ( (lv_dataType_1_0= 'datetime' ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1294:1: (lv_dataType_1_0= 'datetime' )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1294:1: (lv_dataType_1_0= 'datetime' )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1295:3: lv_dataType_1_0= 'datetime'
            {
            lv_dataType_1_0=(Token)match(input,37,FOLLOW_37_in_ruleDateTimeProperty2620); 

                    newLeafNode(lv_dataType_1_0, grammarAccess.getDateTimePropertyAccess().getDataTypeDatetimeKeyword_1_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDateTimePropertyRule());
            	        }
                   		setWithLastConsumed(current, "dataType", lv_dataType_1_0, "datetime");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1308:2: ( (lv_name_2_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1309:1: (lv_name_2_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1309:1: (lv_name_2_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1310:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDateTimeProperty2650); 

            			newLeafNode(lv_name_2_0, grammarAccess.getDateTimePropertyAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDateTimePropertyRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1326:2: ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) ) )?
            int alt30=2;
            int LA30_0 = input.LA(1);

            if ( (LA30_0==30) ) {
                alt30=1;
            }
            switch (alt30) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1326:3: ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_STRING ) )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1326:3: ( (lv_hasDefault_3_0= 'default' ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1327:1: (lv_hasDefault_3_0= 'default' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1327:1: (lv_hasDefault_3_0= 'default' )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1328:3: lv_hasDefault_3_0= 'default'
                    {
                    lv_hasDefault_3_0=(Token)match(input,30,FOLLOW_30_in_ruleDateTimeProperty2674); 

                            newLeafNode(lv_hasDefault_3_0, grammarAccess.getDateTimePropertyAccess().getHasDefaultDefaultKeyword_3_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDateTimePropertyRule());
                    	        }
                           		setWithLastConsumed(current, "hasDefault", true, "default");
                    	    

                    }


                    }

                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1341:2: ( (lv_defaultValue_4_0= RULE_STRING ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1342:1: (lv_defaultValue_4_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1342:1: (lv_defaultValue_4_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1343:3: lv_defaultValue_4_0= RULE_STRING
                    {
                    lv_defaultValue_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDateTimeProperty2704); 

                    			newLeafNode(lv_defaultValue_4_0, grammarAccess.getDateTimePropertyAccess().getDefaultValueSTRINGTerminalRuleCall_3_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDateTimePropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"defaultValue",
                            		lv_defaultValue_4_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDateTimeProperty"


    // $ANTLR start "entryRuleIntegerProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1367:1: entryRuleIntegerProperty returns [EObject current=null] : iv_ruleIntegerProperty= ruleIntegerProperty EOF ;
    public final EObject entryRuleIntegerProperty() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIntegerProperty = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1368:2: (iv_ruleIntegerProperty= ruleIntegerProperty EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1369:2: iv_ruleIntegerProperty= ruleIntegerProperty EOF
            {
             newCompositeNode(grammarAccess.getIntegerPropertyRule()); 
            pushFollow(FOLLOW_ruleIntegerProperty_in_entryRuleIntegerProperty2747);
            iv_ruleIntegerProperty=ruleIntegerProperty();

            state._fsp--;

             current =iv_ruleIntegerProperty; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIntegerProperty2757); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIntegerProperty"


    // $ANTLR start "ruleIntegerProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1376:1: ruleIntegerProperty returns [EObject current=null] : ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'integer' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_INT ) ) )? (otherlv_5= 'min' ( (lv_minValue_6_0= RULE_INT ) ) )? (otherlv_7= 'max' ( (lv_maxValue_8_0= RULE_INT ) ) )? ) ;
    public final EObject ruleIntegerProperty() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;
        Token lv_dataType_1_0=null;
        Token lv_name_2_0=null;
        Token lv_hasDefault_3_0=null;
        Token lv_defaultValue_4_0=null;
        Token otherlv_5=null;
        Token lv_minValue_6_0=null;
        Token otherlv_7=null;
        Token lv_maxValue_8_0=null;

         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1379:28: ( ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'integer' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_INT ) ) )? (otherlv_5= 'min' ( (lv_minValue_6_0= RULE_INT ) ) )? (otherlv_7= 'max' ( (lv_maxValue_8_0= RULE_INT ) ) )? ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1380:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'integer' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_INT ) ) )? (otherlv_5= 'min' ( (lv_minValue_6_0= RULE_INT ) ) )? (otherlv_7= 'max' ( (lv_maxValue_8_0= RULE_INT ) ) )? )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1380:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'integer' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_INT ) ) )? (otherlv_5= 'min' ( (lv_minValue_6_0= RULE_INT ) ) )? (otherlv_7= 'max' ( (lv_maxValue_8_0= RULE_INT ) ) )? )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1380:2: ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'integer' ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_INT ) ) )? (otherlv_5= 'min' ( (lv_minValue_6_0= RULE_INT ) ) )? (otherlv_7= 'max' ( (lv_maxValue_8_0= RULE_INT ) ) )?
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1380:2: ( (lv_description_0_0= RULE_STRING ) )?
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( (LA31_0==RULE_STRING) ) {
                alt31=1;
            }
            switch (alt31) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1381:1: (lv_description_0_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1381:1: (lv_description_0_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1382:3: lv_description_0_0= RULE_STRING
                    {
                    lv_description_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleIntegerProperty2799); 

                    			newLeafNode(lv_description_0_0, grammarAccess.getIntegerPropertyAccess().getDescriptionSTRINGTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getIntegerPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_0_0, 
                            		"STRING");
                    	    

                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1398:3: ( (lv_dataType_1_0= 'integer' ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1399:1: (lv_dataType_1_0= 'integer' )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1399:1: (lv_dataType_1_0= 'integer' )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1400:3: lv_dataType_1_0= 'integer'
            {
            lv_dataType_1_0=(Token)match(input,38,FOLLOW_38_in_ruleIntegerProperty2823); 

                    newLeafNode(lv_dataType_1_0, grammarAccess.getIntegerPropertyAccess().getDataTypeIntegerKeyword_1_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getIntegerPropertyRule());
            	        }
                   		setWithLastConsumed(current, "dataType", lv_dataType_1_0, "integer");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1413:2: ( (lv_name_2_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1414:1: (lv_name_2_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1414:1: (lv_name_2_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1415:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleIntegerProperty2853); 

            			newLeafNode(lv_name_2_0, grammarAccess.getIntegerPropertyAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getIntegerPropertyRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1431:2: ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_INT ) ) )?
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==30) ) {
                alt32=1;
            }
            switch (alt32) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1431:3: ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValue_4_0= RULE_INT ) )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1431:3: ( (lv_hasDefault_3_0= 'default' ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1432:1: (lv_hasDefault_3_0= 'default' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1432:1: (lv_hasDefault_3_0= 'default' )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1433:3: lv_hasDefault_3_0= 'default'
                    {
                    lv_hasDefault_3_0=(Token)match(input,30,FOLLOW_30_in_ruleIntegerProperty2877); 

                            newLeafNode(lv_hasDefault_3_0, grammarAccess.getIntegerPropertyAccess().getHasDefaultDefaultKeyword_3_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getIntegerPropertyRule());
                    	        }
                           		setWithLastConsumed(current, "hasDefault", true, "default");
                    	    

                    }


                    }

                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1446:2: ( (lv_defaultValue_4_0= RULE_INT ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1447:1: (lv_defaultValue_4_0= RULE_INT )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1447:1: (lv_defaultValue_4_0= RULE_INT )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1448:3: lv_defaultValue_4_0= RULE_INT
                    {
                    lv_defaultValue_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleIntegerProperty2907); 

                    			newLeafNode(lv_defaultValue_4_0, grammarAccess.getIntegerPropertyAccess().getDefaultValueINTTerminalRuleCall_3_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getIntegerPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"defaultValue",
                            		lv_defaultValue_4_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1464:4: (otherlv_5= 'min' ( (lv_minValue_6_0= RULE_INT ) ) )?
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==39) ) {
                alt33=1;
            }
            switch (alt33) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1464:6: otherlv_5= 'min' ( (lv_minValue_6_0= RULE_INT ) )
                    {
                    otherlv_5=(Token)match(input,39,FOLLOW_39_in_ruleIntegerProperty2927); 

                        	newLeafNode(otherlv_5, grammarAccess.getIntegerPropertyAccess().getMinKeyword_4_0());
                        
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1468:1: ( (lv_minValue_6_0= RULE_INT ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1469:1: (lv_minValue_6_0= RULE_INT )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1469:1: (lv_minValue_6_0= RULE_INT )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1470:3: lv_minValue_6_0= RULE_INT
                    {
                    lv_minValue_6_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleIntegerProperty2944); 

                    			newLeafNode(lv_minValue_6_0, grammarAccess.getIntegerPropertyAccess().getMinValueINTTerminalRuleCall_4_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getIntegerPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"minValue",
                            		lv_minValue_6_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1486:4: (otherlv_7= 'max' ( (lv_maxValue_8_0= RULE_INT ) ) )?
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==40) ) {
                alt34=1;
            }
            switch (alt34) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1486:6: otherlv_7= 'max' ( (lv_maxValue_8_0= RULE_INT ) )
                    {
                    otherlv_7=(Token)match(input,40,FOLLOW_40_in_ruleIntegerProperty2964); 

                        	newLeafNode(otherlv_7, grammarAccess.getIntegerPropertyAccess().getMaxKeyword_5_0());
                        
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1490:1: ( (lv_maxValue_8_0= RULE_INT ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1491:1: (lv_maxValue_8_0= RULE_INT )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1491:1: (lv_maxValue_8_0= RULE_INT )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1492:3: lv_maxValue_8_0= RULE_INT
                    {
                    lv_maxValue_8_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleIntegerProperty2981); 

                    			newLeafNode(lv_maxValue_8_0, grammarAccess.getIntegerPropertyAccess().getMaxValueINTTerminalRuleCall_5_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getIntegerPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"maxValue",
                            		lv_maxValue_8_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIntegerProperty"


    // $ANTLR start "entryRuleDecimalProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1516:1: entryRuleDecimalProperty returns [EObject current=null] : iv_ruleDecimalProperty= ruleDecimalProperty EOF ;
    public final EObject entryRuleDecimalProperty() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDecimalProperty = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1517:2: (iv_ruleDecimalProperty= ruleDecimalProperty EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1518:2: iv_ruleDecimalProperty= ruleDecimalProperty EOF
            {
             newCompositeNode(grammarAccess.getDecimalPropertyRule()); 
            pushFollow(FOLLOW_ruleDecimalProperty_in_entryRuleDecimalProperty3024);
            iv_ruleDecimalProperty=ruleDecimalProperty();

            state._fsp--;

             current =iv_ruleDecimalProperty; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDecimalProperty3034); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDecimalProperty"


    // $ANTLR start "ruleDecimalProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1525:1: ruleDecimalProperty returns [EObject current=null] : ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'decimal' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'precision' ( (lv_precision_4_0= RULE_INT ) ) )? (otherlv_5= 'scale' ( (lv_scale_6_0= RULE_INT ) ) )? ) ;
    public final EObject ruleDecimalProperty() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;
        Token lv_dataType_1_0=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_precision_4_0=null;
        Token otherlv_5=null;
        Token lv_scale_6_0=null;

         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1528:28: ( ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'decimal' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'precision' ( (lv_precision_4_0= RULE_INT ) ) )? (otherlv_5= 'scale' ( (lv_scale_6_0= RULE_INT ) ) )? ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1529:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'decimal' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'precision' ( (lv_precision_4_0= RULE_INT ) ) )? (otherlv_5= 'scale' ( (lv_scale_6_0= RULE_INT ) ) )? )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1529:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'decimal' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'precision' ( (lv_precision_4_0= RULE_INT ) ) )? (otherlv_5= 'scale' ( (lv_scale_6_0= RULE_INT ) ) )? )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1529:2: ( (lv_description_0_0= RULE_STRING ) )? ( (lv_dataType_1_0= 'decimal' ) ) ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'precision' ( (lv_precision_4_0= RULE_INT ) ) )? (otherlv_5= 'scale' ( (lv_scale_6_0= RULE_INT ) ) )?
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1529:2: ( (lv_description_0_0= RULE_STRING ) )?
            int alt35=2;
            int LA35_0 = input.LA(1);

            if ( (LA35_0==RULE_STRING) ) {
                alt35=1;
            }
            switch (alt35) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1530:1: (lv_description_0_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1530:1: (lv_description_0_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1531:3: lv_description_0_0= RULE_STRING
                    {
                    lv_description_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDecimalProperty3076); 

                    			newLeafNode(lv_description_0_0, grammarAccess.getDecimalPropertyAccess().getDescriptionSTRINGTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDecimalPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_0_0, 
                            		"STRING");
                    	    

                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1547:3: ( (lv_dataType_1_0= 'decimal' ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1548:1: (lv_dataType_1_0= 'decimal' )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1548:1: (lv_dataType_1_0= 'decimal' )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1549:3: lv_dataType_1_0= 'decimal'
            {
            lv_dataType_1_0=(Token)match(input,41,FOLLOW_41_in_ruleDecimalProperty3100); 

                    newLeafNode(lv_dataType_1_0, grammarAccess.getDecimalPropertyAccess().getDataTypeDecimalKeyword_1_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDecimalPropertyRule());
            	        }
                   		setWithLastConsumed(current, "dataType", lv_dataType_1_0, "decimal");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1562:2: ( (lv_name_2_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1563:1: (lv_name_2_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1563:1: (lv_name_2_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1564:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDecimalProperty3130); 

            			newLeafNode(lv_name_2_0, grammarAccess.getDecimalPropertyAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDecimalPropertyRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1580:2: (otherlv_3= 'precision' ( (lv_precision_4_0= RULE_INT ) ) )?
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==42) ) {
                alt36=1;
            }
            switch (alt36) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1580:4: otherlv_3= 'precision' ( (lv_precision_4_0= RULE_INT ) )
                    {
                    otherlv_3=(Token)match(input,42,FOLLOW_42_in_ruleDecimalProperty3148); 

                        	newLeafNode(otherlv_3, grammarAccess.getDecimalPropertyAccess().getPrecisionKeyword_3_0());
                        
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1584:1: ( (lv_precision_4_0= RULE_INT ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1585:1: (lv_precision_4_0= RULE_INT )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1585:1: (lv_precision_4_0= RULE_INT )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1586:3: lv_precision_4_0= RULE_INT
                    {
                    lv_precision_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleDecimalProperty3165); 

                    			newLeafNode(lv_precision_4_0, grammarAccess.getDecimalPropertyAccess().getPrecisionINTTerminalRuleCall_3_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDecimalPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"precision",
                            		lv_precision_4_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1602:4: (otherlv_5= 'scale' ( (lv_scale_6_0= RULE_INT ) ) )?
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( (LA37_0==43) ) {
                alt37=1;
            }
            switch (alt37) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1602:6: otherlv_5= 'scale' ( (lv_scale_6_0= RULE_INT ) )
                    {
                    otherlv_5=(Token)match(input,43,FOLLOW_43_in_ruleDecimalProperty3185); 

                        	newLeafNode(otherlv_5, grammarAccess.getDecimalPropertyAccess().getScaleKeyword_4_0());
                        
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1606:1: ( (lv_scale_6_0= RULE_INT ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1607:1: (lv_scale_6_0= RULE_INT )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1607:1: (lv_scale_6_0= RULE_INT )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1608:3: lv_scale_6_0= RULE_INT
                    {
                    lv_scale_6_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleDecimalProperty3202); 

                    			newLeafNode(lv_scale_6_0, grammarAccess.getDecimalPropertyAccess().getScaleINTTerminalRuleCall_4_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDecimalPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"scale",
                            		lv_scale_6_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDecimalProperty"


    // $ANTLR start "entryRuleEnumerationProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1632:1: entryRuleEnumerationProperty returns [EObject current=null] : iv_ruleEnumerationProperty= ruleEnumerationProperty EOF ;
    public final EObject entryRuleEnumerationProperty() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumerationProperty = null;


        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1633:2: (iv_ruleEnumerationProperty= ruleEnumerationProperty EOF )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1634:2: iv_ruleEnumerationProperty= ruleEnumerationProperty EOF
            {
             newCompositeNode(grammarAccess.getEnumerationPropertyRule()); 
            pushFollow(FOLLOW_ruleEnumerationProperty_in_entryRuleEnumerationProperty3245);
            iv_ruleEnumerationProperty=ruleEnumerationProperty();

            state._fsp--;

             current =iv_ruleEnumerationProperty; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEnumerationProperty3255); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumerationProperty"


    // $ANTLR start "ruleEnumerationProperty"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1641:1: ruleEnumerationProperty returns [EObject current=null] : ( ( (lv_description_0_0= RULE_STRING ) )? ( (otherlv_1= RULE_ID ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValueAsString_4_0= RULE_ID ) ) )? ) ;
    public final EObject ruleEnumerationProperty() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token lv_hasDefault_3_0=null;
        Token lv_defaultValueAsString_4_0=null;

         enterRule(); 
            
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1644:28: ( ( ( (lv_description_0_0= RULE_STRING ) )? ( (otherlv_1= RULE_ID ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValueAsString_4_0= RULE_ID ) ) )? ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1645:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (otherlv_1= RULE_ID ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValueAsString_4_0= RULE_ID ) ) )? )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1645:1: ( ( (lv_description_0_0= RULE_STRING ) )? ( (otherlv_1= RULE_ID ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValueAsString_4_0= RULE_ID ) ) )? )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1645:2: ( (lv_description_0_0= RULE_STRING ) )? ( (otherlv_1= RULE_ID ) ) ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValueAsString_4_0= RULE_ID ) ) )?
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1645:2: ( (lv_description_0_0= RULE_STRING ) )?
            int alt38=2;
            int LA38_0 = input.LA(1);

            if ( (LA38_0==RULE_STRING) ) {
                alt38=1;
            }
            switch (alt38) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1646:1: (lv_description_0_0= RULE_STRING )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1646:1: (lv_description_0_0= RULE_STRING )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1647:3: lv_description_0_0= RULE_STRING
                    {
                    lv_description_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleEnumerationProperty3297); 

                    			newLeafNode(lv_description_0_0, grammarAccess.getEnumerationPropertyAccess().getDescriptionSTRINGTerminalRuleCall_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getEnumerationPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"description",
                            		lv_description_0_0, 
                            		"STRING");
                    	    

                    }


                    }
                    break;

            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1663:3: ( (otherlv_1= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1664:1: (otherlv_1= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1664:1: (otherlv_1= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1665:3: otherlv_1= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getEnumerationPropertyRule());
            	        }
                    
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEnumerationProperty3323); 

            		newLeafNode(otherlv_1, grammarAccess.getEnumerationPropertyAccess().getTypeEnumerationCrossReference_1_0()); 
            	

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1676:2: ( (lv_name_2_0= RULE_ID ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1677:1: (lv_name_2_0= RULE_ID )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1677:1: (lv_name_2_0= RULE_ID )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1678:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEnumerationProperty3340); 

            			newLeafNode(lv_name_2_0, grammarAccess.getEnumerationPropertyAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEnumerationPropertyRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1694:2: ( ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValueAsString_4_0= RULE_ID ) ) )?
            int alt39=2;
            int LA39_0 = input.LA(1);

            if ( (LA39_0==30) ) {
                alt39=1;
            }
            switch (alt39) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1694:3: ( (lv_hasDefault_3_0= 'default' ) ) ( (lv_defaultValueAsString_4_0= RULE_ID ) )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1694:3: ( (lv_hasDefault_3_0= 'default' ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1695:1: (lv_hasDefault_3_0= 'default' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1695:1: (lv_hasDefault_3_0= 'default' )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1696:3: lv_hasDefault_3_0= 'default'
                    {
                    lv_hasDefault_3_0=(Token)match(input,30,FOLLOW_30_in_ruleEnumerationProperty3364); 

                            newLeafNode(lv_hasDefault_3_0, grammarAccess.getEnumerationPropertyAccess().getHasDefaultDefaultKeyword_3_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getEnumerationPropertyRule());
                    	        }
                           		setWithLastConsumed(current, "hasDefault", true, "default");
                    	    

                    }


                    }

                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1709:2: ( (lv_defaultValueAsString_4_0= RULE_ID ) )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1710:1: (lv_defaultValueAsString_4_0= RULE_ID )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1710:1: (lv_defaultValueAsString_4_0= RULE_ID )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1711:3: lv_defaultValueAsString_4_0= RULE_ID
                    {
                    lv_defaultValueAsString_4_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEnumerationProperty3394); 

                    			newLeafNode(lv_defaultValueAsString_4_0, grammarAccess.getEnumerationPropertyAccess().getDefaultValueAsStringIDTerminalRuleCall_3_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getEnumerationPropertyRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"defaultValueAsString",
                            		lv_defaultValueAsString_4_0, 
                            		"ID");
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumerationProperty"


    // $ANTLR start "ruleMultiplicity"
    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1735:1: ruleMultiplicity returns [Enumerator current=null] : ( (enumLiteral_0= 'many' ) | (enumLiteral_1= 'one' ) | (enumLiteral_2= '1..*' ) | (enumLiteral_3= '1..1' ) ) ;
    public final Enumerator ruleMultiplicity() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;

         enterRule(); 
        try {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1737:28: ( ( (enumLiteral_0= 'many' ) | (enumLiteral_1= 'one' ) | (enumLiteral_2= '1..*' ) | (enumLiteral_3= '1..1' ) ) )
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1738:1: ( (enumLiteral_0= 'many' ) | (enumLiteral_1= 'one' ) | (enumLiteral_2= '1..*' ) | (enumLiteral_3= '1..1' ) )
            {
            // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1738:1: ( (enumLiteral_0= 'many' ) | (enumLiteral_1= 'one' ) | (enumLiteral_2= '1..*' ) | (enumLiteral_3= '1..1' ) )
            int alt40=4;
            switch ( input.LA(1) ) {
            case 44:
                {
                alt40=1;
                }
                break;
            case 45:
                {
                alt40=2;
                }
                break;
            case 46:
                {
                alt40=3;
                }
                break;
            case 47:
                {
                alt40=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 40, 0, input);

                throw nvae;
            }

            switch (alt40) {
                case 1 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1738:2: (enumLiteral_0= 'many' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1738:2: (enumLiteral_0= 'many' )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1738:4: enumLiteral_0= 'many'
                    {
                    enumLiteral_0=(Token)match(input,44,FOLLOW_44_in_ruleMultiplicity3451); 

                            current = grammarAccess.getMultiplicityAccess().getZeroManyEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getMultiplicityAccess().getZeroManyEnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1744:6: (enumLiteral_1= 'one' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1744:6: (enumLiteral_1= 'one' )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1744:8: enumLiteral_1= 'one'
                    {
                    enumLiteral_1=(Token)match(input,45,FOLLOW_45_in_ruleMultiplicity3468); 

                            current = grammarAccess.getMultiplicityAccess().getZeroOneEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getMultiplicityAccess().getZeroOneEnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1750:6: (enumLiteral_2= '1..*' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1750:6: (enumLiteral_2= '1..*' )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1750:8: enumLiteral_2= '1..*'
                    {
                    enumLiteral_2=(Token)match(input,46,FOLLOW_46_in_ruleMultiplicity3485); 

                            current = grammarAccess.getMultiplicityAccess().getOneManyEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_2, grammarAccess.getMultiplicityAccess().getOneManyEnumLiteralDeclaration_2()); 
                        

                    }


                    }
                    break;
                case 4 :
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1756:6: (enumLiteral_3= '1..1' )
                    {
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1756:6: (enumLiteral_3= '1..1' )
                    // ../com.ldh.mod4j.businessdomain/src-gen/com/ldh/mod4j/businessdomain/parser/antlr/internal/InternalBusinessDomainDsl.g:1756:8: enumLiteral_3= '1..1'
                    {
                    enumLiteral_3=(Token)match(input,47,FOLLOW_47_in_ruleMultiplicity3502); 

                            current = grammarAccess.getMultiplicityAccess().getOneEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_3, grammarAccess.getMultiplicityAccess().getOneEnumLiteralDeclaration_3()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMultiplicity"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleBusinessDomainModel_in_entryRuleBusinessDomainModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBusinessDomainModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleBusinessDomainModel127 = new BitSet(new long[]{0x0000000000000800L});
    public static final BitSet FOLLOW_11_in_ruleBusinessDomainModel145 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleBusinessDomainModel162 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleBusinessDomainModel179 = new BitSet(new long[]{0x0000000000422012L});
    public static final BitSet FOLLOW_ruleBusinessClass_in_ruleBusinessDomainModel201 = new BitSet(new long[]{0x0000000000422012L});
    public static final BitSet FOLLOW_ruleEnumeration_in_ruleBusinessDomainModel228 = new BitSet(new long[]{0x0000000000422012L});
    public static final BitSet FOLLOW_ruleAssociation_in_ruleBusinessDomainModel255 = new BitSet(new long[]{0x0000000000422012L});
    public static final BitSet FOLLOW_ruleAssociation_in_entryRuleAssociation293 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAssociation303 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleAssociation345 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleAssociation363 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAssociation383 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAssociation400 = new BitSet(new long[]{0x0000F00000000000L});
    public static final BitSet FOLLOW_ruleMultiplicity_in_ruleAssociation426 = new BitSet(new long[]{0x000000000000C000L});
    public static final BitSet FOLLOW_14_in_ruleAssociation445 = new BitSet(new long[]{0x0000F00000000000L});
    public static final BitSet FOLLOW_15_in_ruleAssociation476 = new BitSet(new long[]{0x0000F00000000000L});
    public static final BitSet FOLLOW_ruleMultiplicity_in_ruleAssociation498 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAssociation518 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAssociation535 = new BitSet(new long[]{0x0000000000011000L});
    public static final BitSet FOLLOW_16_in_ruleAssociation558 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleAssociation584 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBusinessClass_in_entryRuleBusinessClass620 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBusinessClass630 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleBusinessClass672 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleBusinessClass690 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleBusinessClass707 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_18_in_ruleBusinessClass725 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleBusinessClass745 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleBusinessClass759 = new BitSet(new long[]{0x0000026220300030L});
    public static final BitSet FOLLOW_ruleProperty_in_ruleBusinessClass780 = new BitSet(new long[]{0x0000026220300030L});
    public static final BitSet FOLLOW_20_in_ruleBusinessClass794 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleBusinessClass806 = new BitSet(new long[]{0x0000000001200030L});
    public static final BitSet FOLLOW_ruleAbstractBusinessRule_in_ruleBusinessClass827 = new BitSet(new long[]{0x0000000001200030L});
    public static final BitSet FOLLOW_21_in_ruleBusinessClass840 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleBusinessClass854 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnumeration_in_entryRuleEnumeration890 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEnumeration900 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleEnumeration942 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleEnumeration960 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEnumeration977 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleEnumeration994 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleEnumerationLiteral_in_ruleEnumeration1015 = new BitSet(new long[]{0x0000000000200020L});
    public static final BitSet FOLLOW_21_in_ruleEnumeration1028 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnumerationLiteral_in_entryRuleEnumerationLiteral1064 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEnumerationLiteral1074 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEnumerationLiteral1116 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleEnumerationLiteral1134 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleEnumerationLiteral1151 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleEnumerationLiteral1169 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAbstractBusinessRule_in_entryRuleAbstractBusinessRule1205 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAbstractBusinessRule1215 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBusinessRule_in_ruleAbstractBusinessRule1262 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUniqueRule_in_ruleAbstractBusinessRule1289 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBusinessRule_in_entryRuleBusinessRule1324 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBusinessRule1334 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleBusinessRule1376 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleBusinessRule1399 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleBusinessRule1416 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUniqueRule_in_entryRuleUniqueRule1452 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUniqueRule1462 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleUniqueRule1504 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleUniqueRule1522 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleUniqueRule1539 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleUniqueRule1556 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleUniqueRule1576 = new BitSet(new long[]{0x0000000002200000L});
    public static final BitSet FOLLOW_25_in_ruleUniqueRule1589 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleUniqueRule1609 = new BitSet(new long[]{0x0000000002200000L});
    public static final BitSet FOLLOW_21_in_ruleUniqueRule1623 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProperty_in_entryRuleProperty1659 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleProperty1669 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBoolProperty_in_ruleProperty1717 = new BitSet(new long[]{0x000000000C001000L});
    public static final BitSet FOLLOW_ruleStringProperty_in_ruleProperty1744 = new BitSet(new long[]{0x000000000C001000L});
    public static final BitSet FOLLOW_ruleDateTimeProperty_in_ruleProperty1771 = new BitSet(new long[]{0x000000000C001000L});
    public static final BitSet FOLLOW_ruleIntegerProperty_in_ruleProperty1798 = new BitSet(new long[]{0x000000000C001000L});
    public static final BitSet FOLLOW_ruleDecimalProperty_in_ruleProperty1825 = new BitSet(new long[]{0x000000000C001000L});
    public static final BitSet FOLLOW_ruleEnumerationProperty_in_ruleProperty1852 = new BitSet(new long[]{0x000000000C001000L});
    public static final BitSet FOLLOW_26_in_ruleProperty1870 = new BitSet(new long[]{0x0000000008001000L});
    public static final BitSet FOLLOW_27_in_ruleProperty1903 = new BitSet(new long[]{0x0000000010001000L});
    public static final BitSet FOLLOW_28_in_ruleProperty1934 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleProperty1962 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBoolProperty_in_entryRuleBoolProperty1998 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBoolProperty2008 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleBoolProperty2050 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleBoolProperty2074 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleBoolProperty2104 = new BitSet(new long[]{0x0000000040000002L});
    public static final BitSet FOLLOW_30_in_ruleBoolProperty2128 = new BitSet(new long[]{0x0000000180000000L});
    public static final BitSet FOLLOW_31_in_ruleBoolProperty2160 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleBoolProperty2191 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringProperty_in_entryRuleStringProperty2230 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStringProperty2240 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleStringProperty2282 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleStringProperty2306 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleStringProperty2336 = new BitSet(new long[]{0x0000001C40000002L});
    public static final BitSet FOLLOW_30_in_ruleStringProperty2360 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleStringProperty2390 = new BitSet(new long[]{0x0000001C00000002L});
    public static final BitSet FOLLOW_34_in_ruleStringProperty2410 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleStringProperty2427 = new BitSet(new long[]{0x0000001800000002L});
    public static final BitSet FOLLOW_35_in_ruleStringProperty2447 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleStringProperty2464 = new BitSet(new long[]{0x0000001000000002L});
    public static final BitSet FOLLOW_36_in_ruleStringProperty2484 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleStringProperty2501 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDateTimeProperty_in_entryRuleDateTimeProperty2544 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDateTimeProperty2554 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleDateTimeProperty2596 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_ruleDateTimeProperty2620 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDateTimeProperty2650 = new BitSet(new long[]{0x0000000040000002L});
    public static final BitSet FOLLOW_30_in_ruleDateTimeProperty2674 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleDateTimeProperty2704 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntegerProperty_in_entryRuleIntegerProperty2747 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIntegerProperty2757 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleIntegerProperty2799 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_ruleIntegerProperty2823 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleIntegerProperty2853 = new BitSet(new long[]{0x0000018040000002L});
    public static final BitSet FOLLOW_30_in_ruleIntegerProperty2877 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleIntegerProperty2907 = new BitSet(new long[]{0x0000018000000002L});
    public static final BitSet FOLLOW_39_in_ruleIntegerProperty2927 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleIntegerProperty2944 = new BitSet(new long[]{0x0000010000000002L});
    public static final BitSet FOLLOW_40_in_ruleIntegerProperty2964 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleIntegerProperty2981 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDecimalProperty_in_entryRuleDecimalProperty3024 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDecimalProperty3034 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleDecimalProperty3076 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_41_in_ruleDecimalProperty3100 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDecimalProperty3130 = new BitSet(new long[]{0x00000C0000000002L});
    public static final BitSet FOLLOW_42_in_ruleDecimalProperty3148 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleDecimalProperty3165 = new BitSet(new long[]{0x0000080000000002L});
    public static final BitSet FOLLOW_43_in_ruleDecimalProperty3185 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleDecimalProperty3202 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnumerationProperty_in_entryRuleEnumerationProperty3245 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEnumerationProperty3255 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleEnumerationProperty3297 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEnumerationProperty3323 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEnumerationProperty3340 = new BitSet(new long[]{0x0000000040000002L});
    public static final BitSet FOLLOW_30_in_ruleEnumerationProperty3364 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEnumerationProperty3394 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_ruleMultiplicity3451 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleMultiplicity3468 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleMultiplicity3485 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_ruleMultiplicity3502 = new BitSet(new long[]{0x0000000000000002L});

}